Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

参考書籍一覧ページに必読マークを表示する #5674

Merged
merged 7 commits into from
Nov 14, 2022

Conversation

hikarook94
Copy link
Contributor

@hikarook94 hikarook94 commented Oct 25, 2022

Issue

概要

/books書籍一覧ページで書籍が何かしらのプラクティスで必読に指定されている場合は必読マークを表示するように変更しました。

変更確認方法

  1. ブランチfeature/display-must-read-mark-in-booksをローカルに取り込む
  2. サーバーを起動する
  3. mentormentaroでログインする
  4. http://localhost:3000/booksにアクセスする
  5. 『ゼロからわかるRuby超入門』に必読マークが付いていることを確認する
  6. http://localhost:3000/practices/199563205/editにアクセスする
  7. 書籍を選択ボタンを押す
  8. 『はじめて学ぶソフトウェアのテスト技法』を選択、必読をONにして、更新するボタンを押す
  9. http://localhost:3000/booksに再びアクセスする
  10. 『はじめて学ぶソフトウェアのテスト技法』に必読マークが付いていることを確認する

変更前

スクリーンショット 2022-10-27 15 54 44

変更後

スクリーンショット 2022-10-27 15 57 21

@hikarook94 hikarook94 force-pushed the feature/display-must-read-mark-in-books branch from 1f5c8f9 to 4793853 Compare October 26, 2022 07:02
@hikarook94 hikarook94 changed the title Feature/display must read mark in books 参考書籍一覧ページに必読マークを表示する Oct 27, 2022
@hikarook94
Copy link
Contributor Author

@yamatatsu10969
お疲れ様です!
ご都合がよければこちらのPRのレビューをお願いしたいのですがいかがでしょうか?

@hikarook94 hikarook94 marked this pull request as ready for review October 27, 2022 07:25
@yamatatsu10969
Copy link
Contributor

@hikarook94
ご依頼いただきありがとうございます!
レビューさせていただきます🚀

Copy link
Contributor

@yamatatsu10969 yamatatsu10969 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@hikarook94
レビューさせていただきました!

ローカルでの動作問題なかったです🙌
CleanShot 2022-10-28 at 08 48 54@2x

数点、質問や提案をさせていただいているのでご確認ください🙏

# frozen_string_literal: true

module BooksHelper
def must_read_for_any_practice?(book)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

must_read_for_any_practice? だと どんなプラクティスでも必読? と理解してしまいそうなので、シンプルに must_read? でも良さそうだと思いました!

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

たしかにメソッド名わかりづらいですね...😓
本とプラクティスの関連を表すpractices_booksテーブルがmust_read属性を持っていてpractices_books.must_read?と名前が重複してしまうかなという思いもあり、少し具体的な名前にしたいと考えました。
いずれかのプラクティスで必読?みたいなメソッド名が良いかと思うのですがいかがでしょうか?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

いずれかのプラクティスで必読?みたいなメソッド名が良いかと思うのですがいかがでしょうか?

そちらでもわかりやすいので良いと思います〜!

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ありがとうございます〜!
any + 複数形 + ?一つでも存在しているか?となるようにメソッド名を修正しました!

@@ -0,0 +1,7 @@
# frozen_string_literal: true

module BooksHelper
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

BooksHelper を作ることで view でのロジックを減らして読みやすくするんですね〜 👍

@@ -2,6 +2,6 @@

class API::BooksController < API::BaseController
def index
@books = Book.with_attached_cover.includes(:practices)
@books = Book.with_attached_cover.includes(%i[practices practices_books])
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

自分が includes に対する理解が浅いので質問です!
practices_books を追加した理由を教えていただけると助かります🙏
(ローカルで practices_books を削除して実行しても特に動作は変わらなかったため。)

includes の使い方を調査したところN+1問題を解決するために使用されるようですね🧐

https://pikawaka.com/rails/includes

上記の記事を読んだ自分の理解は以下になります。

practices_booksincludes に指定することで事前に practices_books を取得できるので、BooksHelperbook.practices_books の時にクエリを発行せずに済む。

この理解で合っていますでしょうか?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

質問ありがとうございます!
僕もその理解で追加したのですが、質問をいただいて改めて調べたところBook.with_attached_cover.includes(:practices)だけでもpractices_booksを取得するクエリが発行されているようなのであまり意味はなかったかもしれません...削除しようかなと思います。

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

そうなんですね!実行までありがとうございます🙏
削除でも大丈夫そうですね!

@hikarook94
Copy link
Contributor Author

@yamatatsu10969
レビューありがとうございました!
一部コメントに返信しています。ご確認よろしくお願いいたします!

@yamatatsu10969
Copy link
Contributor

@hikarook94
コメントさせていただきました!
コメントいただいた方針で大丈夫だと思います🙆‍♂️

@hikarook94 hikarook94 force-pushed the feature/display-must-read-mark-in-books branch from 4793853 to 2ba62ce Compare October 31, 2022 01:54
@hikarook94
Copy link
Contributor Author

@yamatatsu10969
お疲れ様です!
たびたびすみませんが修正しました!ご確認よろしくお願いいたします🙇‍♂️

Copy link
Contributor

@yamatatsu10969 yamatatsu10969 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

修正ありがとうございました!
LGTMです🚀

@hikarook94
Copy link
Contributor Author

@yamatatsu10969
レビューありがとうございました!

@komagata
メンバーの方にApproveいただいたのでレビューをお願いいたします🙏

# frozen_string_literal: true

module BooksHelper
def must_read_for_any_practices?(book)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Viewでしか使わないのであればDecoratorにするのがいいかもです〜

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ありがとうございます!Decoratorにしてみました!
ご確認よろしくお願いします🙏

@hikarook94 hikarook94 force-pushed the feature/display-must-read-mark-in-books branch from 2ba62ce to d870b3b Compare November 7, 2022 08:08
# frozen_string_literal: true

module BookDecorator
def must_read_for_any_practices?
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Decoratorに独自のメソッドを追加した場合は対応するテストが欲しい感じです〜

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

テストを追加しました!ご確認よろしくお願いいたします🙏

@hikarook94 hikarook94 force-pushed the feature/display-must-read-mark-in-books branch 2 times, most recently from 818ed67 to 086db78 Compare November 8, 2022 05:53
Comment on lines 12 to 13
assert_equal true, @book1.must_read_for_any_practices?
assert_equal false, @book2.must_read_for_any_practices?
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
assert_equal true, @book1.must_read_for_any_practices?
assert_equal false, @book2.must_read_for_any_practices?
assert @book1.must_read_for_any_practices?
assert_not @book2.must_read_for_any_practices?

trueかどうかのテストはassertがいいと思います〜

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

修正しました!ご確認よろしくお願いいたします!

@hikarook94 hikarook94 force-pushed the feature/display-must-read-mark-in-books branch from 086db78 to 9588b9f Compare November 11, 2022 06:56
Copy link
Member

@komagata komagata left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

確認させて頂きました。OKです〜🙆‍♂️

@komagata komagata merged commit fbcc104 into main Nov 14, 2022
@komagata komagata deleted the feature/display-must-read-mark-in-books branch November 14, 2022 07:00
@github-actions github-actions bot mentioned this pull request Nov 14, 2022
19 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants